高次元正規分布の距離は平均√D, 分散0.7
高次元正規分布の距離は平均√N, 分散0.7
D次元正規分布$ N_D(0, 1)に従うデータ点の原点からユークリッド距離は、だいたい平均$ \sqrt{D}標準偏差$ 1/\sqrt{2}の分布に従う
標準偏差が意外と小さい
https://gyazo.com/0d112dd0f26b35bcdb475adc65bde59d
https://gyazo.com/dcb18b69b4fa13bbea0c1f7a2568176e
code::
mean= 9.972699059944992 sd= 0.70375223347664
mean= 19.98802691399663 sd= 0.7060739521568569
mean= 29.992667664100654 sd= 0.7078926693796469
mean= 39.99309275039724 sd= 0.7074454497781785
code:py
import numpy as np
import matplotlib.pyplot as plt
# サンプル数と次元数の設定
num_samples = 100000
# 距離の分布をプロット
plt.figure(figsize=(10, 6))
for d in dimensions:
# d次元の正規分布に従うランダムデータを生成
data = np.random.normal(0, 1, (num_samples, d))
# 各データ点の原点からの距離を計算
distances = np.linalg.norm(data, axis=1)
# 平均と分散
print("mean=", distances.mean(), "sd=", distances.std())
# ヒストグラムをプロット
plt.hist(distances, bins=30, alpha=0.5, label=f'{d} dimensions', density=True)
# グラフの設定
plt.xlabel('Distance from Origin')
plt.ylabel('Density')
plt.legend()
plt.title('Distribution of Distances from Origin in High-Dimensional Space')
plt.show()